package main

import (
	"strconv"
	"strings"
	"testing"
)

/**
100. 相同的树
给你两棵二叉树的根节点 p 和 q ，编写一个函数来检验这两棵树是否相同。

如果两个树在结构上相同，并且节点具有相同的值，则认为它们是相同的。



示例 1：


输入：p = [1,2,3], q = [1,2,3]
输出：true
示例 2：


输入：p = [1,2], q = [1,null,2]
输出：false
示例 3：


输入：p = [1,2,1], q = [1,1,2]
输出：false


提示：

两棵树上的节点数目都在范围 [0, 100] 内
-104 <= Node.val <= 104
*/

type Node struct {
	Val   int
	Left  *Node
	Right *Node
}

func isSameTree(p *Node, q *Node) bool {
	var s1 string
	var s2 string
	recursionTree(p, &s1)
	recursionTree(q, &s2)
	//fmt.Println(s1)
	//fmt.Println(s2)
	return strings.TrimRight(s1, ",") == strings.TrimRight(s2, ",")
}

func recursionTree(root *Node, str *string) {
	if root == nil {
		*str += "null" + ","
		return
	}
	*str += strconv.Itoa(root.Val) + ","
	recursionTree(root.Left, str)
	recursionTree(root.Right, str)
}

func TestName(t *testing.T) {
	p := &Node{Val: 1}
	q := &Node{Val: 1}

	p.Left = &Node{Val: 1}
	q.Right = &Node{Val: 1}
	t.Log(isSameTree(p, q))
}
